home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / misc / volume12 / safe-rm.csh / part01 next >
Encoding:
Text File  |  1990-04-13  |  3.5 KB  |  141 lines

  1. Newsgroups: comp.sources.misc
  2. subject: v12i006: Safe "rm" in C shell
  3. From: @uunet.uu.net:flur%duke@gatech.edu@uunet.UU.NET
  4. Sender: allbery@uunet.UU.NET (Brandon S. Allbery - comp.sources.misc)
  5.  
  6. Posting-number: Volume 12, Issue 6
  7. Submitted-by: @uunet.uu.net:flur%duke@gatech.edu@uunet.UU.NET
  8. Archive-name: safe-rm.csh/part01
  9.  
  10. I would like to submit the following dumb shell script;  hopefully
  11. it will be useful to someone out there.
  12. #! /bin/sh
  13. # This is a shell archive, meaning:
  14. # 1. Remove everything above the #! /bin/sh line.
  15. # 2. Save the resulting text in a file.
  16. # 3. Execute the file with /bin/sh (not csh) to create the files:
  17. #    safe-rm
  18. #    safe-rm.1
  19. # This archive created: Mon Apr  9 10:02:39 1990
  20. export PATH; PATH=/bin:$PATH
  21. if test -f 'safe-rm'
  22. then
  23.     echo shar: will not over-write existing file "'safe-rm'"
  24. else
  25. cat << \SHAR_EOF > 'safe-rm'
  26. #!/bin/csh -f
  27. #
  28. #  Sample Use:    safe-rm file1 file2 dir1 dir2
  29. #
  30. #  Author :    Peter W. Flur
  31. #              Georgia Institute of Technology
  32. #                School of Electrical Engineering
  33. #            
  34. #  Address:    Box 32500
  35. #              Georgia Institute of Technology
  36. #        Atlanta, GA  30332
  37. #
  38. #  Phone:    (404) 583-9355
  39. #
  40. #  E-mail:    flur@duke.gatech.edu
  41. #
  42. #  Description:    This script uses the csh to provide a trashcan 
  43. #        analogy in unix.  A directory defined by the 
  44. #        environment variable TRASH is created and used        
  45. #        to copy files into.  A weekly script or something 
  46. #        of that nature can be used to clean out the trashcan.
  47. #  
  48. #  Advice:    Probably should be used by aliasing the rm command to safe-rm.
  49. #
  50.  
  51. set PATH=/bin
  52. set TRASH=$HOME/.trash
  53.  
  54. if !( -d $TRASH ) then
  55. #  echo "safe-rm:  Trash Can does not exist.  Creating a new can."
  56.   mkdir $TRASH
  57. endif
  58.  
  59. if ( $#argv <= 0 ) then
  60.   echo "Usage: safe-rm [-r] <file> [<file> ...]"
  61.   exit 0
  62. endif
  63.  
  64. if ( "$argv[1]" == '-r' ) then
  65.   set RECURSE=1
  66. else
  67.   set RECURSE=0
  68. endif
  69.  
  70. while ( $#argv > 0 ) 
  71.  
  72.   if ( -f $argv[1] ) then
  73.  
  74.     mv $argv[1] $TRASH/$argv[1].$$
  75.  
  76.     if ($status) then
  77.       tar cf - $argv[1] | (cd $TRASH; tar xf -)
  78.       /bin/rm -fr $argv[1].$$
  79.     endif
  80.  
  81.   else
  82.  
  83.     if ( $RECURSE == 1 ) then
  84.       if ( -d $argv[1] ) then
  85.         mv $argv[1] $argv[1].$$
  86.         tar cf - $argv[1].$$ | (cd $TRASH; tar xf -)
  87.         /bin/rm -fr $argv[1].$$
  88.       endif
  89.     else
  90.       echo safe-rm: $argv[1] directory
  91.     endif
  92.  
  93.   endif
  94.  
  95.   shift
  96. end
  97. SHAR_EOF
  98. chmod +x 'safe-rm'
  99. fi # end of overwriting check
  100. if test -f 'safe-rm.1'
  101. then
  102.     echo shar: will not over-write existing file "'safe-rm.1'"
  103. else
  104. cat << \SHAR_EOF > 'safe-rm.1'
  105. .\" Copyright (c) 1980 Regents of the University of California.
  106. .\" All rights reserved.  The Berkeley software License Agreement
  107. .\" specifies the terms and conditions for redistribution.
  108. .\"
  109. .\"    @(#)safe-rm.1    1.0 (Duke) 4/3/90
  110. .\"
  111. .TH SAFE-RM 1 "April 3, 1990"
  112. .UC 4
  113. .SH NAME
  114. safe-rm  \- move files or directories into a trash can
  115. .SH SYNOPSIS
  116. .B safe-rm
  117. file ...
  118. .PP
  119. .SH DESCRIPTION
  120. .I Safe-rm
  121. removes the entries for one or more files from a directory.
  122. If an entry was the last link to the file, the file is destroyed.
  123. Removal of a file requires write permission in its directory,
  124. but neither read nor write permission on the file itself.
  125. .PP
  126. If a file has no write permission and the standard input is a terminal,
  127. its permissions are printed and a line is read from the standard input.
  128. If that line begins with `y' the file is deleted, otherwise the file remains.
  129. .PP
  130. .I Rmdir
  131. removes entries for the named directories, which must be empty.
  132. .SH "SEE ALSO"
  133. rm(1), unlink(2), rmdir(2)
  134. SHAR_EOF
  135. chmod +x 'safe-rm.1'
  136. fi # end of overwriting check
  137. #    End of shell archive
  138. exit 0
  139.  
  140.  
  141.